package ForumDiscussion;

import parcours.*;
import java.rmi.*; import java.rmi.server.*; import list.*;

class SujetDiscussion  extends UnicastRemoteObject
                       implements InterfaceSujetDiscussion {

  private final String titre;

  // liste des protagonistes de ce sujet de discussion
  private Liste<InterfaceAffichageClient>
                 protagonistes = new Liste<InterfaceAffichageClient>();

  public SujetDiscussion(String titre) throws RemoteException {
    this.titre=titre;
  }

  public synchronized void inscription(InterfaceAffichageClient c) { 
	  Parcours<InterfaceAffichageClient> p = protagonistes.nouveauParcours();
	  boolean appartient = false;
	  while(!p.estEnFin())
	  {
		  if(p.elementCourant() == c)
		  {
			  appartient = true;
		  }
	  }
	  if(appartient)
	  {
		  desInscription(c);
	  }
	  else{
		  protagonistes.ajouteEnQueue(c);
	  }
		  
  }

  public synchronized void desInscription(InterfaceAffichageClient c){
	  Parcours<InterfaceAffichageClient> p = protagonistes.nouveauParcours();
	  Liste<InterfaceAffichageClient> protagonistes2 = new Liste<InterfaceAffichageClient>();
	  while(!p.estEnFin())
	  {
		  if(p.elementCourant() != c)
		  {
			 protagonistes2.ajouteEnQueue((InterfaceAffichageClient) p.elementCourant());
			 p.suivant();
		  }
		  else
		  {
			  p.suivant();
		  }
	  }
	  protagonistes = protagonistes2;
  }
  public synchronized void diffuse(String message) throws RemoteException {
	  Parcours<InterfaceAffichageClient> p = protagonistes.nouveauParcours();
	  while(!p.estEnFin())
	  {
		  ((InterfaceAffichageClient) p.elementCourant()).affiche(message);
		  p.suivant();
	  }
  }

}

